package cin.ufpe.br.GDI.Fachada;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Vector;

import cin.ufpe.br.GDI.Dados.ConexaoBD;
import cin.ufpe.br.GDI.Dados.RepositorioCaderno;
import cin.ufpe.br.GDI.Dados.RepositorioEdicao;
import cin.ufpe.br.GDI.Dados.RepositorioFotografia;
import cin.ufpe.br.GDI.Dados.RepositorioFotografo;
import cin.ufpe.br.GDI.Dados.RepositorioMateria;
import cin.ufpe.br.GDI.Dados.RepositorioReporter;
import cin.ufpe.br.GDI.Entidades.Caderno;
import cin.ufpe.br.GDI.Entidades.Edicao;
import cin.ufpe.br.GDI.Entidades.Endereco;
import cin.ufpe.br.GDI.Entidades.Fotografia;
import cin.ufpe.br.GDI.Entidades.Fotografo;
import cin.ufpe.br.GDI.Entidades.Materia;
import cin.ufpe.br.GDI.Entidades.Reporter;

public class Fachada {
	
	private RepositorioReporter repReporter;
	private RepositorioFotografo repFotografo;
	private RepositorioMateria repMateria;
	private RepositorioCaderno repCaderno;
	private RepositorioEdicao repEdicao;
	private RepositorioFotografia repFotografia;

	public Fachada() throws ClassNotFoundException, SQLException {		
		ConexaoBD conexao = new ConexaoBD();
		conexao.conectarBD();
		this.repReporter = new RepositorioReporter(conexao.getConn());
		this.repFotografo = new RepositorioFotografo(conexao.getConn());
		this.repMateria = new RepositorioMateria(conexao.getConn());
		this.repCaderno = new RepositorioCaderno(conexao.getConn());
		this.repEdicao = new RepositorioEdicao(conexao.getConn());
		this.repFotografia = new RepositorioFotografia(conexao.getConn());
	}
	
	public void cadastrarReporter(String nome, String sexo, String funcao, String dataNascimento, String dataAdmissao, String email,Vector<String> telefones,String CEP,String cidade,String logradouro,String estado ,long CPF,Reporter coordenador) throws SQLException{
		
		Endereco endereco = new Endereco(CEP, cidade, logradouro, estado);	
		
		Reporter reporter = new Reporter(nome, sexo, funcao, dataNascimento, dataAdmissao, email, telefones, endereco, CPF, coordenador);			
		
		repReporter.inserirReporter(reporter);
	}
	
	public Vector<Reporter> buscarReporterNome(String nome ) throws SQLException{
		return repReporter.buscarReporter(nome);
	}
	
	public void removerReporter(Reporter reporter) throws SQLException{
		repReporter.removerReporter(reporter);
	}
	
	public Reporter buscarReporterCpf(long cpf) throws SQLException{
		return repReporter.buscarReporter(cpf);
	}
	
	public void cadastrarFotografo(String nome, String sexo, String funcao, String dataNascimento, String dataAdmissao, String email,Vector<String> telefones,String CEP,String cidade,String logradouro,String estado ,long CPF) throws SQLException{
		
				
		Endereco endereco =  new Endereco(CEP, cidade, logradouro, estado);
		
		Fotografo fotografo = new Fotografo(nome, sexo, funcao, dataNascimento, dataAdmissao, email, telefones, endereco, CPF);		
		
		repFotografo.inserirFotografo(fotografo);
	}
	public Vector<Fotografo> buscarFotografoNome(String nome) throws SQLException{
		return repFotografo.buscarFotografo(nome);
	}
	
	public void removerFotografo(Fotografo fotografo) throws SQLException{
		repFotografo.removerFotografo(fotografo);
	}
	
	public Fotografo buscarFotografoCpf(long cpf) throws SQLException{
		return repFotografo.buscarFotografo(cpf);
	}
	
	public void inserirMateria(Materia m) throws FileNotFoundException, SQLException{
		repMateria.inserirMateria(m);
	}
	
	public Vector<Materia> buscarMateria(String textoBusca) throws SQLException, IOException{
		return repMateria.buscarMateria(textoBusca);
	}
	
	public Vector<Caderno> getCadernos() throws SQLException{
		return repCaderno.getCadernos();
	}
	
	public Vector<Edicao> getEdicoes() throws SQLException{
		return repEdicao.getEdicoes();
	}
	
	public void inserirFotografia (Fotografia foto, String cpfFotografo) throws FileNotFoundException, SQLException{
		repFotografia.inserir(foto, cpfFotografo);
	}
		
	public ArrayList<Fotografia> buscarFotografia (String palavraChave) throws SQLException, IOException{
		return repFotografia.buscarFotografia(palavraChave);
	}
}
